import {fork} from "child_process";
import log from "./logger";

const localVersion = '1.0.0'; // 假设这是您的本地版本

// 模拟一个函数来获取服务器版本
function fetchServerVersion() {
    // 这里应该是一个异步操作，比如HTTP请求，但为了示例，我们使用一个静态值
    return Promise.resolve('1.0.1'); // 假设服务器版本是1.0.1
}

// 定时器，定期检查版本
function checkVersion() {
    setInterval(() => {
        fetchServerVersion().then(serverVersion => {
            log.info(`Checking version: local (${localVersion}) vs server (${serverVersion})`);
            if (localVersion !== serverVersion) {
                log.error('Version mismatch detected, restarting service...');
                process.exit(1); // 非0退出码表示错误，触发重启
            } else {
                log.info('Versions match. Continuing service...');
            }
        }).catch(error => {
            log.error('Error fetching server version:', error);
        });
    }, 10000); // 每10秒检查一次版本
}

function startWorker() {
    log.info("startWorker...")
    const worker = fork('./js/main.js');

    worker.on('exit', () => {
        log.error(`Worker exited with code, restarting...`);
        // 重新启动worker
        setTimeout(startWorker, 10000); // 延迟10秒重启，防止过快重启
    });

    // 可以监听其他事件，例如错误等
    worker.on('error', (err) => {
        log.error('Worker encountered an error:', err);
    });
}

startWorker();